REM >Director:Menus.ModulesSub

REM Option added to display (if any) SWI submenu
REM Is called by Modules and requires the use of
REM ModulesSWI and ModulesCOM

REM x.xx Converted/Modified from original Obey file
REM 1.00 13/11/95 R.Thickings Started
REM 1.01 27/11/95 Updated to include *Commands option

ON ERROR: ON ERROR OFF: ERROR ERR,REPORT$+" at "+STR$ ERL
SYS "OS_GetEnv" TO in$
title$=FNarg(in$,"-do","")

Menu%=FNswi_number("Director_Menu")
Option%=FNswi_number("Director_Option")
Command%=FNswi_number("Director_Command")
Dash%=FNswi_number("Director_Dash")
EndMenu%=FNswi_number("Director_EndMenu")
XOS_Module%=FNswi_number("XOS_Module")

REM OSCLI("/Director:Utils.RMSave "+title$+" <Wimp$ScrapDir>.Director."+title$)

SYS XOS_Module%,18,title$ TO ,,,base%,,;flag%
IF (flag% AND 1) THEN END

OSCLI "*Set Director$Menu ModulesSub"
SYS Menu%,title$+" <Director$Menu> -temp"

SYS Option%,"RMKill"
SYS Command%,"RMKill "+title$
SYS Option%,"RMReInit"
SYS Command%,"RMReInit "+title$
SYS Option%,"Unplug"
SYS Command%,"Unplug "+title$
REM SYS Option%,"Save -sub Save:<Wimp$ScrapDir>.Director."+title$
SYS Dash%
IF FNcomm_check(base%) THEN
 SYS Option%,"*Commands -sub ""Dynamic:/Director:Menus.System.ModulesCOM -do "+title$+""""
ELSE
 SYS Option%,"""No *Commands"" -grey"
ENDIF
IF FNswi_check(base%) THEN
 SYS Option%,"SWIs -sub ""Dynamic:/Director:Menus.System.ModulesSWI -do "+title$+""""
ELSE
 SYS Option%,"""No SWIs"" -grey"
ENDIF
SYS Option%,"Help -sub ""Dynamic:/Director:Menus.System.CommMenu """"Help "+title$+""""" "" "
SYS EndMenu%


END

DEF FNarg(str$,arg$,def$)
LOCAL i,j
i=INSTR(str$,arg$)
IF i=0 THEN =def$
i+=LEN arg$+1
j=INSTR(str$+" <"," ",i)
=MID$(str$,i,j-i)

DEF FNswi_number(name$)
  SYS "OS_SWINumberFromString",,name$ TO a%
=a%

DEF FN0(a%)
LOCAL m%:m%=255
s$=""
WHILE (?a%>=32 OR ?a%=9) AND m%<>0
 s$+=CHR$?a%
 a%+=1:m%-=1
ENDWHILE
=s$

DEF FNcomm_check(base%)
IF ?(base%+base%!&18)=0 =FALSE
=TRUE

DEF FNswi_check(base%)
IF ((base%!&1C) AND &3F)<>0 =FALSE
IF base%!&20<24 OR ((base%!&20) AND 3)<>0 =FALSE
=TRUE
